package test.maxprofit;

public class Solution {
    public int maxProfit(int[] prices) {
//        输入: [7,1,5,3,6,4]
//        输出: 5
//        解释: 在第 2 天（股票价格 = 1）的时候买入，在第 5 天（股票价格 = 6）的时候卖出，最大利润 = 6-1 = 5 。
//        注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格；同时，你不能在买入前卖出股票。
        //fi=max(ai-am,ai-ai-1)=max(ai+fi-ai-1,ai-ai-1)
        //fi-1=ai-1-am  am=ai-1-fi
        if (prices.length < 2) {
            return 0;
        }
        if (prices.length == 2) {
            return Math.max(prices[1] - prices[0], 0);
        }
        int pre = prices[1] - prices[0];
        int ans = pre;
        for (int i = 2; i < prices.length; i++) {
            pre = Math.max(prices[i] + pre - prices[i - 1], prices[i] - prices[i - 1]);
            ans = Math.max(ans, pre);
        }
        return Math.max(ans, 0);
    }
}
